package com.lanou3g.code0409.common;

import java.util.Scanner;

/**
 * Created by dllo on 18/4/9.
 */

 /*
        综合练习:
        用户输入一个密码,判断是否合法
        合法标准:
            1.长度不小于8位
            2.需要包含 大写字母/小写字母/数字
         */

public class PasswordTest {
    public static void main(String[] args) {
        System.out.println("请输入密码:");
        Scanner scanner = new Scanner(System.in);
        // 接收用户输入的一行信息
        // 类型是String
        String password = scanner.nextLine();

        //判断长度
        if (password.length() < 8) {
            System.out.println("密码长度不够8位");
            return;
        }

        // 判断数字
        boolean hasNum = false;
        for (int i = 0; i < 10; i++) {
            // 1 和 "1" 是不一样的
            // String.valuef(基本数据类型)
            // 可以把任意的 基本数据类型 变成字符串
            if (password.contains(String.valueOf(i))) {
                // 10次循环 只要 有一次进入到 这个if中
                // 就证明密码中有 数字
                hasNum = true;
            }
        }
        if (hasNum == false) {
            // 如果没有数字
            // 即 hasNum = false
            System.out.println("没有数字");
            return;
        }

        // 判断是否包含 大写字母
        // 65-A; 66-B ; ASCII
        // true => 有大写字母
        // false => 没有大写字母
        boolean hasUpperCase = false;
        for (char j = 'A'; j <= 'Z'; j++) { // 把char类型的数据,转换成letter类型数据
            if (password.contains(String.valueOf(j))) {
                hasUpperCase = true;
            }
        }
        if (hasUpperCase == false) {
            System.out.println("没有大写字母");
            return;
        }

        boolean hasLowerCase = false;
        for (char c = 'a'; c <= 'z'; c++) {
            if (password.contains(String.valueOf(c))) {
                hasLowerCase = true;
            }
        }
        if (hasLowerCase == false) {
            System.out.println("没有小写字母");
            return;
        }
        System.out.println("密码合法");
    }
}
